package com.itheima.d8_generics_method;

import java.util.ArrayList;

/*
    1 泛型方法
        修饰符 <类型变量，类型变量，…>  返回值类型 方法名(形参列表) { }
    2 通配符
        就是 “?” ，可以在“使用泛型”的时候代表一切类型；  E T K V 是在定义泛型的时候使用。
    3 泛型的上下限(受限泛型)
        泛型上限:   ? extends Car :   ?  能接收的必须是Car或者其子类 。
        泛型下限：  ?  super Car :   ?  能接收的必须是Car或者其父类。
 */
public class Test {
    public static void main(String[] args) {
        ArrayList<Car> list1=new ArrayList<>();
        list1.add(new Car());
        Car c=list1.get(0);
        testRun(list1);
    }

    public static <E> void testRun(ArrayList<E> e){
        System.out.println(e);
    }
    public static <E extends Car> void testRun1(ArrayList<E> e){
        System.out.println(e);
    }

    public static void testRun2(ArrayList<?> e){
        System.out.println(e);
    }
    public static void testRun3(ArrayList<? extends Car> e){
        System.out.println(e);
    }
    public static void testRun4(ArrayList<? super BMW> e){
        System.out.println(e);
    }

    public static <E> void testRun5(E e){}


}
class Car{
public static void  a(){

}


}
class BMW extends Car{

}


